package com.mane.pojo;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Data // Lombok 注解，自动生成 Getter、Setter、toString 等方法
@TableName("wnxt_menu") // MyBatis-Plus 注解，指定数据库表名
public class Menu {

    private Long id; // 菜单ID，对应表中的 `id` 字段
    private String menuName; // 菜单名称，对应表中的 `menu_name` 字段
    private Long parentId; // 父菜单ID，对应表中的 `parent_id` 字段
    private Integer orderNum; // 显示顺序，对应表中的 `order_num` 字段
    private String path; // 路由地址，对应表中的 `path` 字段
    private String component; // 组件路径，对应表中的 `component` 字段
    private String query; // 路由参数，对应表中的 `query` 字段
    private Integer isFrame; // 是否为外链（0是 1否），对应表中的 `is_frame` 字段
    private String menuType; // 菜单类型（M目录 C菜单 F按钮），对应表中的 `menu_type` 字段
    private String visible; // 菜单状态（0显示 1隐藏），对应表中的 `visible` 字段
    private String status; // 菜单状态（0正常 1停用），对应表中的 `status` 字段
    private String perms; // 权限标识，对应表中的 `perms` 字段
    private String icon; // 菜单图标，对应表中的 `icon` 字段
    @TableField(fill = FieldFill.INSERT)
    private Date createTime; // 创建时间，对应表中的 `create_time` 字段
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime; // 更新时间，对应表中的 `update_time` 字段
    /** 子菜单 */
    private List<Menu> children = new ArrayList<>();
}